<?php


namespace app\userapi\controller;

use app\common\model\User;
use app\common\util\TokenAuth;
use app\service\common\Api;
use app\common\exception\HttpResponseException;

class Base extends Api
{
    // 用户信息
    protected $user;
    // 每页显示条数
    protected $limit;
    // 不需要登录的方法
    protected $noLoginAction = [];

    public function __construct()
    {
        parent::__construct();
        $this->checkLogin();
        $this->setList();
    }

    /**
     * 检查登录
     */
    protected function checkLogin()
    {
        // 如果是不需要登录的方法，直接通过
        if (in_array(request()->action, $this->noLoginAction)) {
            return true;
        }
        // 检查token
        try {
            $user = TokenAuth::parseToken('user');
        } catch (\Exception $e) {
            throw new HttpResponseException(401, ['msg' => $e->getMessage()]);
        }
        // 开始检测用户权限
        $this->user = User::find($user['id']);
        if (!$this->user) {
            throw new HttpResponseException(401, ['msg' => '用户不存在']);
        }
        // 设置request的user , 用于日志记录
        request()->user = $this->user;
    }

    /**
     * 列表分页设置
     */
    protected function setList()
    {
        $this->limit = $this->request->post('limit', 20);
    }

}
